/*
    2342. 数位和相等数对的最大和
    给你一个下标从 0 开始的数组 nums ，数组中的元素都是 正 整数
    。请你选出两个下标 i 和 j（i != j），且 nums[i] 的数位和 与  nums[j] 的数位和相等。
    请你找出所有满足条件的下标 i 和 j ，找出并返回 nums[i] + nums[j] 可以得到的 最大值 。

*/
/**
 * @param {number[]} nums
 * @return {number}
 */
var maximumSum = function (nums) {
	let ans = -1
	const map = new Map()
	for (const num of nums) {
		let s = 0 // num 的数位和
		for (let x = num; x; x = Math.floor(x / 10)) {
			s += x % 10
		}
		if (map.has(s)) {
			// 如果左边也有数位和等于 s 的元素
			ans = Math.max(ans, map.get(s) + num)
		}
		map.set(s, Math.max(map.get(s) || 0, num)) // 更新值
	}
	return ans
}
const nums = [18, 43, 36, 13, 7]
let ret = maximumSum(nums)
console.log(ret)
